package com.woniuxy.school.online.repair.util;

/**
 * 地理位置相关工具
 */
public class DistanceUtils {
    private static final double EARTH_RADIUS = 6371.0; // 地球半径(公里)

    /**
     * 通过经纬度计算两点之间的距离
     * @param lat1 纬度1
     * @param lng1 经度1
     * @param lat2 纬度2
     * @param lng2 经度2
     * @return 返回多少米
     */
    public static double getDistance(double lat1, double lng1,
                                     double lat2, double lng2) {
        double dLat = Math.toRadians(lat2 - lat1);
        double dLng = Math.toRadians(lng2 - lng1);
        double a = Math.sin(dLat/2) * Math.sin(dLat/2)
                + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2))
                * Math.sin(dLng/2) * Math.sin(dLng/2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        return EARTH_RADIUS * c * 1000; // 返回米
    }

    public static void main(String[] args) {
        System.out.println(getDistance(25.054567000000038, 102.70306600000004, 29.570108000000012, 106.59449199999995));
    }
}

